#!/bin/sh
#
# Nginx daemon control script.
# 
# This is an init script for the nginx daemon.
# To use nginx, you must first set up the config file(s).
#
# Written for Slackware Linux by Cherife Li <cherife@dotimes.com>.
#

DAEMON=/usr/sbin/nginx
CONF=/etc/nginx/nginx.conf
PID=/var/run/nginx.pid

nginx_start() {
  # Sanity checks.
  if [ ! -r $CONF ]; then # no config file, exit:
    echo "Please check the nginx config file, exiting..."
    exit 1
  fi

  if [ -f $PID ]; then
    echo "Nging is already running?"
    exit 1
  fi

  echo "Starting Nginx server daemon:"
  if [ -x $DAEMON ]; then
    $DAEMON -c $CONF
  fi
}

nginx_test_conf() {
  echo -e "Checking configuration for correct syntax and\nthen trying to open files referenced in configuration..."
  $DAEMON -t -c $CONF
}

nginx_term() {
  echo "Shutdown Nginx quickly..."
  kill -TERM $(cat $PID)
}

nginx_quit() {
  echo "Shutdown Nginx gracefully..."
  kill -QUIT $(cat $PID)
}

nginx_reload() {
  echo "Reloading Nginx configuration..."
  kill -HUP $(cat $PID)
}

nginx_upgrade() {
  echo -e "Upgrading to the new Nginx binary.\nMake sure the Nginx binary has been replaced with new one\nor Nginx server modules were added/removed."
  kill -USR2 $(cat $PID)
  sleep 3
  kill -QUIT $(cat $PID.oldbin)
}

nginx_restart() {
  nginx_quit
  sleep 5
  nginx_start
}

case "$1" in
'start')
  nginx_start
  ;;
'term')
  nginx_term
  ;;
'quit')
  nginx_quit
  ;;
'stop')
  nginx_quit
  ;;
'reload')
  nginx_reload
  ;;
'restart')
  nginx_restart
  ;;
'upgrade')
  nginx_upgrade
  ;;
*)
  echo "usage $0 start|term|quit(stop)|reload|restart|upgrade"
esac
